package com.kx.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class MyController {

    /**
     * 处理器方法返回ModelAndView，实现转发forward（能访问WEB-INF下资源）
     * 特点：forward不和视图解析器一同使用，就当项目中没有视图解析器
     * @return
     */
    @RequestMapping(value = "/doForward.do")
    public ModelAndView doForward() {  //doGet --service请求处理
        ModelAndView mv = new ModelAndView();
        mv.addObject("msg", "欢迎使用");
        mv.addObject("fun", "执行的是doSome方法");
        //显示转发
//        mv.setViewName("forward:/WEB-INF/view/show.jsp");
        mv.setViewName("forward:/hello.jsp");
        return mv;
    }
    /**
     * 处理器方法返回ModelAndView，实现重定向redirect（不能访问WEB-INF下资源）
     * 特点：redirect不和视图解析器一同使用，就当项目中没有视图解析器
     *
     * 框架对重定向的操作：
     * 1、框架会把Model中的简单类型的数据，转为String使用，作为hello.jsp的get请求参数使用
     *      目的是在doRedirect.do和hello.jsp两次请求之间传递数据
     *
     * 2、在目标hello.jsp页面可以使用参数集合对象${param}获取请求参数值
     *      ${param.myname}
     */
    @RequestMapping(value = "/doRedirect.do")
    public ModelAndView doRedirect(String name,String age) {
        ModelAndView mv = new ModelAndView();
        //数据放入到request作用域
        mv.addObject("msg", name+"欢迎使用");
        mv.addObject("fun", age);
        //重定向redirect不能访问web-inf下资源
//        mv.setViewName("redirect:/WEB-INF/view/show.jsp");
        mv.setViewName("redirect:/hello.jsp");
        return mv;
    }
}
